
//冒泡排序
// nums1 = [1, 2, 3, 2, 0, 0, 0], m = 4, nums2 = [2, 5, 6], n = 3
// var merge = function (nums1, m, nums2, n) {
//     let content = 0;
//     for (let i = 0; i < n; i++) {
//         nums1[m] = nums2[i]
//         m++
//     }
//     for (let j = 0; j < m + n - 1; j++) {
//         for (let k = 0; k < m + n - j - 1; k++) {
//             if (nums1[k] > nums1[k + 1]) {
//                 content = nums1[k]
//                 nums1[k] = nums1[k + 1]
//                 nums1[k + 1] = content
//             }
//         }
//     }
//     return nums1;
// };
// console.log(merge(nums1, m, nums2, n));



//选择排序
// var merge = function (nums1, m, nums2, n) {
//     // 1. 合并数组：将nums2复制到nums1末尾
//     for (let i = 0; i < n; i++) {
//         nums1[m + i] = nums2[i]; // 正确位置：m+i（m是初始有效长度，不递增）
//     }
//     const total = m + n; // 总长度

//     // 2. 选择排序：用content记录最小值
//     for (let j = 0; j < total - 1; j++) {
//         let content = Infinity; // **关键修正**：每轮重置content为无穷大
//         let minIndex = j; // 记录最小值索引

//         // 寻找未排序区间（j到total-1）的最小值
//         for (let k = j; k < total; k++) {
//             if (nums1[k] < content) {
//                 content = nums1[k];
//                 minIndex = k; // 记录最小值的索引
//             }
//         }

//         // 交换最小值到位置j
//         const temp = nums1[j];
//         nums1[j] = content;
//         nums1[minIndex] = temp; // 用索引交换，避免修改content
//     }

//     return nums1;
// };

// // 测试用例
// const nums1 = [1, 2, 3, 2, 0, 0, 0], m = 4, nums2 = [2, 5, 6], n = 3;
// console.log(merge(nums1, m, nums2, n)); // 输出：[1, 2, 2, 3, 5, 6]



nums1 = [1, 2, 3, 0, 0, 0], m = 3, nums2 = [2, 5, 6], n = 3
var merge = function (nums1, m, nums2, n) {
    // 将nums2的元素复制到nums1的末尾
    for (let i = 0; i < n; i++) {
        nums1[m + i] = nums2[i];
    }
    // 对nums1进行排序
    nums1.sort((a, b) => a - b);
    return nums1;
};
console.log(merge(nums1, m, nums2, n));